/** 实现instanceOf
 * 核心：
 * 1. instanceOf的逻辑是，如果对象的原型链上存在指定构造函数的原型对象，即返回true；否则返回false
 * 2. 对象存在__proto__属性，指向自己构造函数的原型对象，而构造函数存在prototype属性，指向原型对象；
 * 实现思路
 * 1. 最小单元：取对象的原型链节点与构造函数的原型对象比对
 * 2. 重复：链表遍历，处理对象的原型链
 *
 * @param {*} A 对象
 * @param {*} B 构造函数
 * @returns
 */
const instanceOf = (A, B) => {
  let p = A;
  while (p) {
    p = p.__proto__;
    if (p === B.prototype) {
      return true;
    }
  }
  return false;
};
let a = () => {};
console.log(instanceOf(a, Function));
console.log(instanceOf(a, String));
